//
//  UIScrollView+ACExt.m
//  ACFramework
//
//  Created by caoyq on 2018/6/20.
//

#import "UIScrollView+ACExt.h"

@implementation UIScrollView (ACExt)

- (void)ac_updateScrollOffsetWithItemView: (UIView *)itemView
{
    CGFloat contentSizeWidth  = self.contentSize.width;
    CGFloat scrollViewWidth   = CGRectGetWidth(self.frame);
    CGFloat scrollViewMidX    = CGRectGetMidX(self.frame);
    CGFloat itemViewMidX      = CGRectGetMidX(itemView.frame);
    
    /**
     分析
     * 第一个if：contentSize 一屏足以就不需要改变 ContentOffset
     * 第二个if：不超过半屏只需要定位到初始位置CGPointMake(0, 0)
     * 第三个if：决定了ContentOffset的x最大偏移量
               item的x到屏幕中间的距离 和 当前scrollview还能滚动的范围，取最小值作为x的滚动偏移量
     */
    if (contentSizeWidth <= scrollViewWidth) {
        return;
    }
    
    if (itemViewMidX <= scrollViewMidX) {
        [self setContentOffset:CGPointMake(0, 0) animated:YES];
        return;
    }
    
    CGFloat min_X = MIN(contentSizeWidth - scrollViewWidth, itemViewMidX - scrollViewMidX);
    [self setContentOffset:CGPointMake(min_X, 0) animated:YES];
}

@end
